/*----------------------------------------------------------------------*
 *	INTERFACE:	Qt3Square
 *	Quantum Tic Tac Toe
 *	Copyright (c) 2005-2009 Novatia Labs, Inc.  All rights reserved.
 *----------------------------------------------------------------------*/

package com.novatialabs.qttt.engine;

/**
 * Qt3Square provides a read-only interface to the information about the
 * state of a particular square in the game board.
 *
 * @Author	John Levine
 * @Author	Duane Gibson
 * @Author Friendly development resources cheerfully provided by Charles Phares.
 * @Author	$Author$
 * @Version	$Revision$
 */

public interface Qt3Square
{

   /*-------------------------------------------------------------------*
    *	METHOD:		isMoveInSquare()
    *	AUTHOR:		Duane Gibson
    *	CREATION DATE:	Tue Feb 15 17:25:34 PST 2005
    *-------------------------------------------------------------------*/
   /**
    * Returns whether the indicated move is in this square.
    *
    * @param	moveNum	number of the move. 
    */

    public abstract boolean isMoveInSquare( int moveNum );

   /*-------------------------------------------------------------------*
    *	METHOD:		getOwner()
    *	AUTHOR:		Duane Gibson
    *	CREATION DATE:	Tue Jan 11 12:00:24 PST 2005
    *-------------------------------------------------------------------*/
   /**
    * Returns the player that owns this square, or null if no move has
    * yet been collapsed to this square.
    */

    public abstract Qt3Player getOwner();

   /*-------------------------------------------------------------------*
    *	METHOD:		getOwningMove()
    *	AUTHOR:		Duane Gibson
    *	CREATION DATE:	Tue Jan 11 12:03:24 PST 2005
    *-------------------------------------------------------------------*/
   /**
    * Returns the move number (1-9) that collapsed into this square
    * or 0 if no move has yet been collapsed to this square.
    */

    public abstract int getOwningMove();


   /*-------------------------------------------------------------------*
    *	METHOD:		getPendingOwner()
    *	AUTHOR:		Duane Gibson
    *	CREATION DATE:	Thu Mar  9 19:48:43 PST 2006
    *-------------------------------------------------------------------*/
   /**
    * Returns the player that does or will own this square when the
    * collapse is completed, or null if the move has not pushed a stem
    * into this square.
    */

    public abstract Qt3Player getPendingOwner();

   /*-------------------------------------------------------------------*
    *	METHOD:		getPendingOwningMove()
    *	AUTHOR:		Duane Gibson
    *	CREATION DATE:	Thu Mar  9 19:50:02 PST 2006
    *-------------------------------------------------------------------*/
   /**
    * Returns the move number (1-9) that does or will own this square
    * when the collapse is complete or 0 if the move has not pushed a
    * stem into this square.
    */

    public abstract int getPendingOwningMove();

} // interface Qt3Square

